import { ARFactory } from '../axios_conf'
// eslint-disable-next-line
import { Method } from 'axios'

/**
 * 获取单个管理员信息
 * @param {{ uid }} uid 管理员唯一标识
 * @returns {Promise}
 */
function fetchManager(config = { uid }, method = 'GET') {
  const url = 'manager'
  return ARFactory({ url, method, params: config })
}

/**
 *  编辑和增加管理员
 * @param {string} mode 触发模式（增加还是设置）
 * @param {{ uid, username, privilege_level, state, password, self_password }} config 用户基本配置信息
 * @param {Method} method 请求方法
 * @returns {Promise}
 */
function SAManager(
  mode = 'set',
  config = {
    uid,
    username,
    privilege_level,
    state,
    password,
    self_password,
    bind_vip,
  },
  method = 'POST'
) {
  const url = mode === 'set' ? 'setManager' : 'addManager'
  return ARFactory({ url, method, data: config })
}

/**
 * 删除单个或多个管理员
 * @param {{ list }} config 管理员列表
 * @param {Method} method 请求方式
 * @returns {Promise}
 */
function delManager(config = { list }, method = 'POST') {
  const url = 'delManager'
  return ARFactory({ url, method, data: config })
}

/**
 * 获取管理组
 * @param {Object} config 额外配置信息
 * @param {Method} method 请求方法
 * @returns {Promise}
 */
function fetchManagers(config = {}, method = 'GET') {
  const url = 'managers'
  return ARFactory({ url, method, params: config })
}

/**
 * 返回管理员的下线
 * @param {{ currentIndex, uid, keyword, _result }} config 当前页 | 用户uid | 关键字 | 返回条数
 * @param {Method} method 请求方法
 * @returns {Promise}
 */
function fetchMangerVips(
  config = { currentIndex, uid, keyword, _result },
  method = 'GET'
) {
  const url = 'manager/vips'
  return ARFactory({ url, method, params: config })
}

export { fetchManager, SAManager, delManager, fetchManagers, fetchMangerVips }
